package com.lagou.zuoyes1m3;

/**
 * 编程获取两个指定字符串中的最大相同子串并打印出来。
 *
 *  如： s1="asdafghjka", s2="aaasdfg" 他们的最大子串为"asd"
 *
 *  提示： 将短的那个串进行长度依次递减的子串与较长的串比较。
 */

public class CompareStr {

    public static void main(String[] args) {

        String str1 = "ctvyyommnvgfcvtc";
        String str2 = "erytvyulionjvy";

        //找出最长的字符串
        String maxStr = str1.length() > str2.length() ? str1 : str2;
        //找到最短的
        String minStr = maxStr.equals(str1) ? str2 : str1;
        System.out.println("长字符串" + maxStr);
        System.out.println("短字符串" + minStr);
//        if (maxStr.equals(str1)) {
//            String minStr = str2;
//            System.out.println(minStr);
//        }else {
//            String minStr = str1;
//            System.out.println(minStr);
//        }

        //中间量
        String temp;
        //最大子串
        String maxLen = "";
        //用双重for循环截取最小字符串，外层从0开始，里层从1开始
        for (int i = 0; i < minStr.length(); i++) {
            for (int j = i + 1; j <= minStr.length(); j++) {
                //接收每次截取的串
                temp = minStr.substring(i,j);
                //判断截取的串是否在最大字符串里面
                if (maxStr.contains(temp)) {
                    //如果在的话，再比较有没有之前赋值的最大字串的长度长，如果有则重新赋值
                    if (temp.length() >= maxLen.length())
                        maxLen = temp;
                }
            }
        }
        System.out.println("最大子串为：" + maxLen);
    }
}
